#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
//void solve()
//{
//	string s;
//	int ans = 1;
//	cin >> s;
//	int n = s.size();
//	for (int i = 0;i<n-1; i++)
//	{
//		if (s[i]!=s[i+1])
//		{
//			ans++;
//		}
//	}
//	for (int i = 0; i < n-1; i++)
//	{
//		if (s[i]=='0'&&s[i+1]=='1')
//		{
//			ans--;
//			break;
//		}
//	}
//	printf("%d\n", ans);
//
//}
//int main()
//{
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	int t;
//	cin >> t;
//	while (t--)
//	{
//		solve();
//	}
//	return 0;
//}
//int main()
//{
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	int a[6] = { 1,2,3,4,5,6 };
//	vector<int> b;
//		for (int i = 1; i <= 4; i++)
//			b.push_back(a[i]);
//		for (int i = 1; i <= 3; i++)
//		{
//			cout << b[i] << " ";
//		}
//	return 0;
//}.

//#define LL long long
//#define LD long double
//const int N = 1e6 + 6;	
//LL n, m;
//LD pr[N];
//
//void work()
//{
//	cin >> n >> m;
//	LD res = n * (pr[n] - pr[n - m]);
//	printf("%.5lf\n", res);
//}
//void pre()
//{
//	for (LL i = 1; i <=1e6;++i)
//	{
//		LD ad = 1.0 / (LD)i;
//		pr[i] = pr[i - 1] + ad;
//	}
//}
//
//int main()
//{
//
//	LL _ = 1;
//	cin >> _;
//	pre();
//	while (_--)
//	{
//		work();
//	}
//	return 0;
//}


//#define LL long long
//#define LD long double
//using namespace std;
//const int N = 1e6 + 6;
//LL n, m;
//LD pr[N];
//void work()
//{
//	cin >> n >> m;
//	LD res = n * (pr[n] - pr[n - m]);
//	printf("%.5Lf\n", res);
//}
//void pre() {
//	for (LL i = 1; i <= 1e6; ++i) {
//		LD ad = 1.0 / (LD)i;
//		pr[i] = pr[i - 1] + ad;
//	}
//}
//int main() {
//	LL _ = 1;
//	cin >> _;
//	pre();
//	while (_--) {
//		work();
//	}
//}

//void solve(){
//	int m, k, t;
//	cin >> m >> k >> t;
//	int ans = 0;
//	while (++ans)
//	{
//		int x = ans, tmp = t;
//		while (!(x/m==0&&x==x%m)&&tmp>0)
//		{
//			tmp = tmp - x;
//			x = x / m * k + x % m;
//		}
//		if (tmp)
//		{
//			break;
//		}
//	}
//	cout << ans << "\n";
//}
#define int long long

void solve()
{
	int m, k, h;
	cin >> m >> k >> h;
	if (m == k) {
		cout << min(m, h) << "\n";
		return;
	}
	int l = -1, r = h + 1, mid;
	auto check = [&](int& x) {
		int t = (x - m) / (m - k) + 1;
		if (x < m)t = 0;
		if (x + t * k >= h)return true;
		else return false;
		};

	while (l + 1 != r) {
		mid = l + r >> 1;
		if (check(mid)) r = mid;
		else l = mid;
	}
	cout << r << "\n";

}
signed main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
	return 0;
}